package com.wenyl.interview.redis.config;

import org.redisson.api.RBloomFilter;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;


/**
 * @author Swimming Dragon
 * @description: TODO
 * @date 2024年09月25日 15:41
 */
@Configuration
@Import(RedissonConfig.class)
public class BloomFilterConfig {
    @Autowired
    private RedissonClient redissonClient;

    @Bean
    public RBloomFilter<String> userInfoBloomFilter() {
        // 创建一个布隆过滤器，这里使用了默认的序列化器
        RBloomFilter<String> bloomFilter = redissonClient.getBloomFilter("userInfo");

        // 初始化布隆过滤器，设置期望的元素数量和期望的误报率
        // 这里假设我们期望存储大约 10 万个元素，且希望误报率为 1%
        // 向布隆过滤器中添加元素
        long phoneNum = 100000L;
        double falseProbability = 0.01;
        bloomFilter.tryInit(phoneNum, falseProbability);
        for(int i=0;i<phoneNum;i++){
            bloomFilter.add(String.valueOf(i));
        }
        return bloomFilter;
    }
}
